package uiMain.menuconsola;

import gestorHotel.Hotel;
import gestorHotel.habitacion.Categoria;
import gestorHotel.habitacion.Habitacion;
import gestorHotel.habitacion.Tipo;
import gestorHotel.servicios.Bebida;
import gestorHotel.servicios.Minibar;

import java.util.ArrayList;
import java.util.Scanner;

public class OpcionDeMenuCrearHabitacion extends OpcionDeMenu {

	public void ejecutar() {
		Scanner in = new Scanner(System.in);
		
		String h = seleccionarHotel();
		Hotel hotel = Main.hoteles.get(h);
		
		if (hotel.getCategorias().isEmpty()) {
			System.out.println("No hay categorías para las habitaciones en este hotel. Primero cree las categorías!");
			return;
		}
		
		if (hotel.getTipos().isEmpty()) {
			System.out.println("No hay tipos para las habitaciones en este hotel. Primero cree los tipos!");
			return;
		}
		
		Habitacion habitacion = new Habitacion();
		System.out.print("Ingrese el número de la habitación: ");
		int numero = Integer.parseInt(in.nextLine());
		
		if (hotel.getHabitaciones().containsKey(numero)) {
			System.out.println("Error: la habitación ya existe!");
			return;
		}
		
		habitacion.setNumero(numero);
		
		System.out.println("Seleccione una categoría:");
		int k = 0;
		ArrayList<String> opciones = new ArrayList<String>();
		for (Categoria categoria : hotel.getCategorias().values()) {
			System.out.println((k + 1) + ". " + categoria.getNombre());
			opciones.add(categoria.getNombre());
			++k;
		}
		
		System.out.print("Ingrese una opción: ");
		int cat = Integer.parseInt(in.nextLine());
		
		habitacion.setCategoria(opciones.get(cat - 1));
		
		System.out.println("Seleccione un tipo:");
		k = 0;
		opciones = new ArrayList<String>();
		for (Tipo t : hotel.getTipos().values()) {
			System.out.println((k + 1) + ". " + t.getNombre());
			opciones.add(t.getNombre());
			++k;
		}
		
		System.out.print("Ingrese una opción: ");
		int tipo = Integer.parseInt(in.nextLine());
		
		habitacion.setTipo((opciones.get(tipo - 1)));
		
		ArrayList<Minibar> minibar = new ArrayList<Minibar>();
		
		while (true) {
			System.out.print("Desea agregar una bebida al minibar? (Y/N)");
			String yn = in.nextLine();
			
			if (!yn.startsWith("Y") && !yn.startsWith("y"))
				break;
			
			System.out.println("Seleccione la bebida que desea agregar:");
			System.out.println();
			k = 0;
			ArrayList<String> opciones2 = new ArrayList<String>();
			for (Bebida bebida : hotel.getBebidas().values()) {
				System.out.println((k + 1) + ". " + bebida.getNombre());
				opciones2.add(bebida.getNombre());
				++k;
			}
			
			int op2 = Integer.parseInt(in.nextLine());
			minibar.add(new Minibar(opciones2.get(op2 - 1), 0));
		}
		
		habitacion.setMinibar(minibar);
		
		if (confirmarAccion()) {
			habitacion.crear(h);
		}
	}

	public String getDescripcion() {
		return "Crear habitación.";
	}

}
